<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // JSON
    // JSON（JavaScript Object Notation, JS对象简谱）是一种轻量级的数据交换格式。它基于 ECMAScript（European Computer Manufacturers Association, 欧洲计算机协会制定的js规范）的一个子集，采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写，同时也易于机器解析和生成，并有效地提升网络传输效率。

    // JSON规则(组成)
    // 1. 数据结构 => 数组或对象嵌套组成  
    // a. 数组嵌套对象  =>  数组对象
    //    [{},{},{},{}]
    // b. 对象中嵌套数组
    //    {country:"china",list:[]} 

    // 2. 组成数据的基本类型
    // a. 键名只能是字符串(JSON字符串中键名需要用引号包裹)
    // b. 键值可以是 string  number boolean  null  object array (不能出现undefined function )

    // JSON和JS对象的区别
    // JSON 是 JS 对象的字符串表示法，它使用文本表示一个 JS 对象的信息，本质是一个字符串。
    // var obj = {a: 'Hello', b: 'World'}; //这是一个对象，注意键名也是可以使用引号包裹的
    // var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串，本质是一个字符串


    // JS对象转JSON注意    
    // 1. undefined function 不会被解析为JSON
    var zhang = {  // js对象
        name: "张三",
        age: 18,
        isStudy: true,
        hasMoney: null,
        a: undefined,
        hobby: ["sing", "dance", "rap"],
        grade: {
            chinese: 55,
            math: 66,
            english: 77,
        },
        say: function () {
            console.log(this.name, this.age);
        }
    }

    var str = JSON.stringify(zhang);
    console.log(str);

    var o = JSON.parse(str)
    console.log(o);




</script>

</html>